
/**
 * 自定义校验规则
 * <pre>
 * 作者:hugh zhuang
 * 邮箱:3378340995@qq.com
 * 日期:2018-09-10-下午3:29:34
 * 版权:广州流辰信息技术有限公司
 * </pre>
 */
import { Validator } from 'vee-validate'
import FormOptions from '../constants/formoptions'
import Utils from '@/utils'
import i18n from '@/lang' // Internationalization 国际化

// 最少项
Validator.extend('min_mum', {
  getMessage: (field, [ref]) => {
    return i18n.t('validate.min_mum', { item: ref })
  },
  validate: (value, [ref]) => {
    if (Utils.isEmpty(ref)) { return true }
    let arrayValue = []
    let itemNum = 0
    const item = parseInt(ref, 10)
    if (Utils.isNotEmpty(value)) {
      if (Array.isArray(value)) {
        arrayValue = value
      } else {
        arrayValue = value.split(',')
      }
      itemNum = arrayValue.length
    }
    return itemNum >= item
  }
})
// 最多项
Validator.extend('max_mum', {
  getMessage: (field, [ref]) => {
    return i18n.t('validate.max_mum', { item: ref })
  },
  validate: (value, [ref]) => {
    if (Utils.isEmpty(ref)) { return true }
    let arrayValue = []
    let itemNum = 0
    const item = parseInt(ref, 10)
    if (Utils.isNotEmpty(value)) {
      if (Array.isArray(value)) {
        arrayValue = value
      } else {
        arrayValue = value.split(',')
      }
      itemNum = arrayValue.length
    }
    return itemNum <= item
  }
})
// 正则表达式
Validator.extend('regexp', {
  getMessage: (field, [type, regex, msg, flags]) => {
    if (FormOptions.t.DATA_FORMAT[type]) {
      return i18n.t('validate.' + type)
    }
    if (!msg) {
      return i18n.t('validate.invalid')
    }
    return msg
  },
  validate: (value, [type, regex, msg, flags]) => {
    if (FormOptions.t.DATA_FORMAT[type]) {
      regex = FormOptions.t.DATA_FORMAT[type]
    }
    if (regex instanceof RegExp) {
      return regex.test(value)
    }

    return new RegExp(regex, flags).test(String(value))
  }
})

